#include<iostream>
using namespace std;

#define TASK_NUM 10;

typedef void(*task_t)();
task_t tasks[TASK_NUM];


void task1()
{
  printf("hehe");
}
void task2()
{
  printf("haha");
}
void task3()
{
  printf("heihei");
}

void InitTask()
{
  for(int i=0;i<TASK_NUM;i++)tasks[i]=NULL;
}
void AddTask(task_t t)
{
  int pos=0;
  for(;pos<TASK_NUM;pos++)
  {
    if(!tasks[pos])break;
  }
  if(tasks[pos]==TASK_NUM)return -1;
  tasks[pos]=t;
  return 0;
}

int main()
{
  pid_t id = fork();
  if(id < 0)
  {
    perror("fork fail");
  }
  else if(id==0)
  {
    int cnt = 5;
    while(cnt--)
    {
      printf("i am a child pid:%d,ppid:%d,cnt\n",getpid(),getppid(),cnt);
      sleep(1);
    }
    exit(0);
  }
  else 
  {
    int cnt=5;
    while(cnt--)
    {    
      printf("i am a parent pid:%d,ppid:%d.cnt:%d\n",getpid(),getppid(),cnt);
      sleep(1);
    }
    int status = 0;
    while(1)
    {
      pid_t ret = waitpid(-1,&status,WNOHANG);
      if(ret>0)
      {
        if(WIFE XITED(status))
        {
          printf("进程跑完了，退出码是：%d\n",WEXITSTATUS(status));
        }
        else 
        {
          printf("异常");
        }
      else if(ret<0)
      {
        printf("wait fail");
      }
      else 
      {
        printf("你好了没");
        sleep(1);
      }
      sleep(3);
   }

      
    }
  }



  cout <<" hello"<< endl;
  return 0;
}
